package com.ruicar.afs.cloud.manage.common.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruicar.afs.cloud.common.core.entity.BaseEntity;
import com.ruicar.afs.cloud.common.modules.contract.enums.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author: Lee
 * @date 2020-05-30 09:21:16 
 * @description 提前结清申请表
 */
@Data
@Accessors(chain = true)
@TableName(value ="manage_prepayment_apply", autoResultMap = true)
public class ManagePrepaymentApply extends BaseEntity<ManagePrepaymentApply> {
	/** 渠道id */
	@ApiModelProperty("渠道id")
	@JsonSerialize(using = ToStringSerializer.class)
	@JSONField(serializeUsing = com.alibaba.fastjson.serializer.ToStringSerializer.class)
	private Long channelId;
	/** 合同编号 */
	@ApiModelProperty("合同编号")
	private String contractNo;
	/** 报价单id */
	@ApiModelProperty("报价单id")
	@JsonSerialize(using = ToStringSerializer.class)
	@JSONField(serializeUsing = com.alibaba.fastjson.serializer.ToStringSerializer.class)
	private Long quotationId;
	/** 数据来源 枚举值：CMS、多品系统 */
	@ApiModelProperty("数据来源 枚举值：CMS、多品系统")
	private DataSourceEnum dataSource;
	/** 当前合同状态 记录提前结清申请时的合同状态 */
	@ApiModelProperty("当前合同状态 记录提前结清申请时的合同状态")
	private ContractStatusEnum currentContractStatus;
	/** 提前结清申请时间 */
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	@ApiModelProperty("提前结清申请时间")
	@JSONField(format = "yyyy-MM-dd")
	private Date prepaymentRequestTime;
	/** 提前结清审批通过时间 */
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	@ApiModelProperty("提前结清审批通过时间")
	@JSONField(format = "yyyy-MM-dd")
	private Date prepaymentApprovedTime;
	/** 客户是否逾期 */
	@ApiModelProperty("客户是否逾期")
	private YesOrNoEnum isOverdue;
	/** 提前结清收款状态 未收款、收款成功、收款失败 */
	@ApiModelProperty("提前结清收款状态 未收款、收款成功、收款失败")
	private CollectionStatusEnum collectionStatus;
	/** 提前结清申请状态 未提交，审核中、审核通过、审核拒绝、申请失效 */
	@ApiModelProperty("提前结清申请状态 未提交，审核中、审核通过、审核拒绝、申请失效")
	private CaseStatusEnum applyStatus;
	/** 提前结清申请自动失效时间 */
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	@ApiModelProperty("提前结清申请自动失效时间")
	private Date invalidTime;
	/** 是否豁免部分金额 */
	@ApiModelProperty("是否豁免部分金额")
	private YesOrNoEnum isExempt;
	/** 豁免单id */
	@ApiModelProperty("豁免单id")
	private Integer exemptId;
	/** 约定还款日 */
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	@ApiModelProperty("约定还款日")
	private Date repayDate;
	/** 提前结清类型 客户主动结清，车损，处置，服务商回购 */
	@ApiModelProperty("提前结清类型 客户主动结清，车损，处置，服务商回购")
	private PrepaymentTypeEnum prepaymentType;
	/** 最终结清金额 */
	@ApiModelProperty("最终结清金额")
	private BigDecimal receivableAmount;
	/** 状态 枚举值：有效、无效 */
	@ApiModelProperty("状态 枚举值：有效、无效")
	private ValidOrInvalidEnum status;
	/** 处理状态 枚举值 */
	@ApiModelProperty("处理状态 枚举值")
	private ProcessStatusEnum processStatus;
	/** 客户姓名 */
	@ApiModelProperty("客户姓名")
	private String custName;
	/** 合同到期日期 */
	@ApiModelProperty("合同到期日期")
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private Date endDate;
	/** 合同激活时间 */
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	@ApiModelProperty("合同激活时间")
	private Date startDate;
	/** 业务类型 */
	@ApiModelProperty("业务类型")
	private BusinessTypeEnum businessType;
	/** 总期数 */
	@ApiModelProperty("总期数")
	private Integer loanTerm;
	/** 已还期数 */
	@ApiModelProperty("已还期数")
	private Integer alreadyPeriods;
	/** 未还期数 */
	@ApiModelProperty("未还期数")
	private Integer noAlreadyPeriods;

	@ApiModelProperty("申请编号")
	private String applyNo;
	/** 证件类型 */
	@ApiModelProperty("证件类型")
	private String certType;
	/** 证件号码 */
	@ApiModelProperty("证件号码")
	private String certNo;

	//合同是否满6期
	@ApiModelProperty("合同是否满6期")
	private YesOrNoEnum isSixPeriod;

	/** 还款方式 对公结算，卡扣 */
	@ApiModelProperty("还款方式 对公结算，卡扣")
	private ReceiptSourceTypeEnum repayMode;

	/** 案件编号 */
	@ApiModelProperty("案件编号")
	private String caseNo;

	/** 业务来源 */
	@ApiModelProperty("业务来源")
	private BusinessSourceEnum businessSource;
	/** 手机号码 */
	@ApiModelProperty("手机号码")
	private String phone;
}
